#功能：随机选人
#输入：一个数字，作为人数
#输出：指定个数的人的姓名（要求不重复）
#作者：陈锦鹏  2013-6-1


#传入两个参数，返回两个参数之间的随机数（包括第一个参数，不包括第二个）
#第一个参数必须小于等于第二个
 function random(){
         if (( $1 > $2 )); then
                 #statements
                 echo "Error: arg invalid" >&2
                 exit 1
         fi
  		local width=$(expr $2 - $1)
         if [[ $width == 0 ]]; then
                 return $1
         fi
         local r=$(expr $RANDOM % $width)
         r=$(expr $r + $1)
         return $r
 }

function pick(){
        persons="zhangsan lisi wangwu zhaoliu zhouqi wangba"
         array_persons=($persons)
         if [[ $1 > ${#array_persons[*]} ]]; then
                 echo "Error: have not enough person to pick" >&2
                 exit 1
         fi

         for((i=0;i<$1;i++))
         do
                 person_num=$(echo $persons|awk '{print NF}')
                 #num=$(expr $person_num + 1)
                 random 0 $person_num
                 local r=$(echo $?)
                 echo ${array_persons[$r]}
                 tmp=${array_persons[$r]}
                 array_persons=(${array_persons[*]/$tmp/})
                 persons=${array_persons[*]}
         done
 }

pick $1